/*
*  This file is part of mangusta
*
*  mangusta is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  mangusta is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with mangusta; if not, write to the Free Software
*  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  US
*
*  Author: <antonino.calderone@ericsson.com>, <acaldmail@gmail.com>
*
*/

#ifndef __NU_VARIABLE_H__
#define __NU_VARIABLE_H__

#include <string>

// ------------------------------------------------------------------------

namespace nu
{
struct variable_t
{
   enum class type_t
   {
      UNDEFINED,
      INTEGER,
      FLOAT,
      DOUBLE,
      STRING,
      BYTE,
      BOOLEAN
   };


   static type_t type_by_typename(const std::string& name);
   static bool is_valid_name(const std::string& name);

   static inline bool is_number( type_t t ) throw()
   {
      return t ==
             type_t::INTEGER ||
             t == type_t::FLOAT ||
             t == type_t::DOUBLE ||
             t == type_t::BOOLEAN;
   }
};


// ------------------------------------------------------------------------

}


// ----------------------------------------------------------------------------

#endif // __NU_VARIABLE_H__
